package cn.iocoder.yudao.module.api.ad.plan;

import cn.iocoder.yudao.module.api.ad.plan.dto.AdPlanRespDTO;

import java.util.Set;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  这里是文件说明
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/03/04
 */
public interface AdPlanApi {

    /**
     * 获取一个可用的广告投放计划
     *
     * @return 广告投放计划
     */
    AdPlanRespDTO takeAvailable(Set<Long> excludePlanIds);

    /**
     * 获取一个可用的广告投放计划
     *
     * @param excludeUserId 排除的用户编号
     * @param excludePlanIds 排除的广告投放计划编号集合
     * @return 广告投放计划
     */
    AdPlanRespDTO takeAvailable(Long excludeUserId, Set<Long> excludePlanIds);

    /**
     * 更新广告投放计划播放完成时的广告花费价格
     *
     * @param planId 广告投放计划编号
     * @return 计费价格
     */
    Integer updateSpendPriceWhenPlayComplete(Long planId);

}
